package org.rain.common.util.storage;

import lombok.NonNull;

import java.io.InputStream;
import java.nio.file.Path;

/**
 * 文件持久化存储规范
 * Created by yt on 2024/4/9 21:32
 */
public interface IFileStorageService {
    /**
     * 上传文件
     * @param inputStream 上传的数据流
     * @return 上传后得到的文件id
     */
    String upload(InputStream inputStream);

    /**
     * 根据文件id响应文件二进制流
     * @param fileId 文件id
     * @return 要读取文件的输入流
     */
    InputStream download(@NonNull String fileId);

    /**
     * 根据文件id删除文件
     * @param fileId 文件id
     */
    Boolean remove(@NonNull String fileId);

    /**
     * 判断指定文件是否存在
     * @param fileId 文件id
     * @return 如果文件存在返回File对象，不存在返回null
     */
    Path exist(@NonNull String fileId);
}
